/**
 * Created by fdg296 on 2017/9/29.
 */
$(document).ready(function(){

    $('#table_list').DataTable({
        dom: '<"top">rt<"bottom"flip><"clear">',
        language: {
            "sUrl":'../static/plugins/datatables/language.json'
        },
        "searching": false,
        "processing": true,
        "serverSide": true,
        ajax:{
            url:'/sys-role/get-role-list',
            type:'post',
            data:function(d){
                d.role_name = $('#role_name').val();
            },
            error:getError
        },
        aoColumns: [
            { "data": "", "bSortable": false},
            { "data": "id", "bSortable": true},
            { "data": "role_name", "bSortable": false },
            { "data": "role_group_name", "bSortable": false },
            { "data": "memo", "bSortable":false },
            { "data": "use_flg", "bSortable":false }
        ],
        columnDefs: [
            {
                "targets": [0],
                "orderable":false,
                "searchable":false,
                "render": function(data, type, full) {
                    if(full.id ==1){
                        return '<a href="javascript:" onclick="ruleModal('+ full.id +')">权限</a>';
                    }else{
                        return '<a href="javascript:" onclick="updateRole('+ full.id +')">修改</a>&nbsp;&nbsp;|&nbsp;&nbsp;' +
                            '<a href="javascript:" onclick="ruleModal('+ full.id +')">权限</a>';
                    }
                }
            },
            {
                "targets": [1],
                "searchable":false
            },
            {
                "targets": [5],
                "data": "use_flg",
                "render": function(data, type, full) {
                    //role id = 1 默认为超级用户，不显示启用禁用。
                    if(full.id != 1){
                        return '<span class="switch" data-id="'+ full.id +'" data-flg="'+(data == 1 ? 0 : 1)+'"><input  style="width:20px;height:20px;" type="checkbox" '+(data == 1 ? 'checked="checked"' : '')+' class="input-check"></span>';
                    }else{
                        return '';
                    }
                }
            }
        ],
        order:[[1,'desc']]
    });
});

$('#select_button').click(function(){
    var table = $('#table_list').DataTable();
    table.ajax.reload();
})

$('#reset_button').click(function(){
    $('#role_name').val('');
    var table = $('#table_list').DataTable();
    table.ajax.reload();
})

$('#depart_name').click(function(){
    if($('#treeDemo').hasClass('ul_tree_display')){
        $('#treeDemo').removeClass('ul_tree_display');
    }else{
        $('#treeDemo').addClass('ul_tree_display');
    }
})

function updateRole(id){
    $('#id').val(id);
    $.post('/sys-role/get-one-role',{id:id},success,'json');
    return false;
    function success(data){
        if(data == null){
            $('#myModal').modal('show');
        }else{
            if(data.code == 500){
                $.jBox.error(data.val, '错误');
            }else{
                var res = data.val;
            	$('#id').val(res.id);
                $('#role_name_other').val(res.role_name);
                $("#role_group_id").val(res.role_group_id);
                $("#use_flg").val(res.use_flg);
                $("#memo").val(res.memo);
                var html = '<option value="0">请选择</option>';
                if(res.list_group.length > 0){
                	var group_val = res.list_group;
                	group_val.forEach(function(e){
                		html += '<option value="'+e.id+'" '+(e.id == res.role_group_id ? 'selected' : '')+'>'+e.role_group_name+'</option>';
                	});
                }
                $('#role_group_id').html(html);
                $('#myModal').modal('show');
            }
        }
    }
}

$('.ajax_post_depart').click(function(){
    var role_name = $('#role_name_other').val();
    var role_group_id = $("#role_group_id").val();

    if(role_name == ''){
        $.jBox.error('请输入角色名称', '错误');
        return false;
    }
    if(role_group_id == 0){
        $.jBox.error('请选择角色组', '错误');
        return false;
    }
    $.post($('#user_form').attr('action'),$('#user_form').serialize(),success,'json');
    return false;
    function success(data){
        if(data.code == 200)
        {
            $.jBox.tip('处理成功', 'success');
            window.setTimeout(function () { self.location.reload(); }, 1000);
        }
        else{
            $.jBox.error(data.val, '错误');
        }
    }
})

$('#add_button').click(function(){
	$.post('/sys-role/get-role-group',{},success,'json');
    return false;
    function success(data){
    	if(data.code == 500){
            $.jBox.error(data.val, '错误');
        }else{
            var res = data.val;
        	$('#id').val('');
            $('#role_name_other').val('');
            $("#role_group_id").val('');
            $("#use_flg").val('');
            $("#memo").val('');
            var html = '<option value="0">请选择</option>';
            if(res.length > 0){
            	res.forEach(function(e){
            		html += '<option value="'+e.id+'">'+e.role_group_name+'</option>';
            	});
            }
            $('#role_group_id_other').html(html);
            $('#role-modal').modal('show');
        }
    }
})

$('.ajax_post_role').click(function(){
    var role_name_add = $('#add_role_name').val();
    var role_group_id_other = $("#role_group_id_other").val();

    if(role_name_add == ''){
        $.jBox.error('请输入角色名称', '错误');
        return false;
    }
    if(role_group_id_other == 0){
        $.jBox.error('请选择角色组', '错误');
        return false;
    }
    $.post($('#role_form').attr('action'),$('#role_form').serialize(),success,'json');
    return false;
    function success(data){
        if(data.code == 200)
        {
            $.jBox.tip('处理成功', 'success');
            window.setTimeout(function () { self.location.reload(); }, 1000);
        }
        else{
            $.jBox.error(data.val, '错误');
        }
    }
})

//禁用
function disableClick(id){
    $.jBox.confirm("确定禁用吗？", "提示", function(v){
        if (v == 'ok'){
            $.post('/sys-role/disable',{id:id},success,'json');
            return false;
            function success(data){
                if(data.code == 200)
                {
                    $.jBox.tip('处理成功', 'success');
                    window.setTimeout(function () { self.location.reload(); }, 1000);
                }
                else{
                    $.jBox.error(data.val, '错误');
                }
            }
        }else{
        	$('#table_list').find('span[data-id='+id+']').children('input').prop('checked',true);
            $.jBox.close();
        }
    });
}

//启用
function enableClick(id){
    $.jBox.confirm("确定启用吗？", "提示", function(v){
        if (v == 'ok'){
            $.post('/sys-role/enable',{id:id},success,'json');
            return false;
            function success(data){
                if(data.code == 200)
                {
                    $.jBox.tip('处理成功', 'success');
                    window.setTimeout(function () { self.location.reload(); }, 1000);
                }
                else{
                    $.jBox.error(data.val, '错误');
                }
            }
        }else{
        	$('#table_list').find('span[data-id='+id+']').children('input').prop('checked',false);
            $.jBox.close();
        }
    });
}

$("#example2").treetable({
    expandable : true
});
function ruleModal(id){
	$('#rule-modal').find('input[type=checkbox]').prop('checked',false);
    var role_array = new Array();
    $('#role_id').val(id);
    $.post('/sys-role/get-rule',{role_id:id},success,'json');
    return false;
    function success(data){
        if(data == null){
            $('#rule-modal').modal('show');
        }else{
            if(data.code == 500){
                $.jBox.error(data.val, '错误');
            }else{
                if(data != null){
                    /*var role_string = data.rule_id;
                     role_array = role_string.split(',');*/
                	$('#rule-modal').find('input[type=checkbox]').each(function(){
                        var check_value = $(this).val();
                        var array_num = $.inArray(check_value, data);
                        if(eval(array_num) >= 0){
                            $(this).prop('checked',true);
                        }
                    })
                }
                $('#rule-modal').modal('show');
            }
        }
    }
}
$('.ajax_post_rules').click(function(){
    var rules_id = $('input[type=checkbox]:checked').val();
    if(rules_id == undefined){
        $.jBox.error('请选择权限', '错误');
        return false;
    }
    $.post($('#rule_form').attr('action'),$('#rule_form').serialize(),success,'json');
    return false;
    function success(data){
        if(data.code == 200)
        {
            $.jBox.tip('处理成功', 'success');
            window.setTimeout(function () { self.location.reload(); }, 1000);
        }
        else{
            $.jBox.error(data.val, '错误');
        }
    }
})

//checkbox选中
$('input[type=checkbox]').mousedown(function(){
    var this_id = $(this).parent().parent().parent().attr('data-tt-id');
    var this_pid_o = $(this).parent().parent().parent().attr('data-tt-parent-id');
    if($(this).is(':checked')){
        propCheckbox(this_id,false);
    }else{
        propCheckbox(this_id,true);

        $('input[type=checkbox]').each(function(){
            var this_id_o = $(this).parent().parent().parent().attr('data-tt-id');
            if(eval(this_id_o) == eval(this_pid_o)){
                $(this).prop('checked',true);
            }
        })
    }
})

function propCheckbox(pid,check_status){
    $('input[type=checkbox]').each(function(){
        var this_pid = $(this).parent().parent().parent().attr('data-tt-parent-id');
        if(eval(pid) == eval(this_pid)){
            $(this).prop('checked',check_status);
        }
    })
}

$('#table_list').on('click','.input-check',function(){
	var id = $(this).parent().attr('data-id');
	var use_flg = $(this).parent().attr('data-flg');
	if(use_flg == '1'){
		enableClick(id);
	}else{
		disableClick(id);
	}
});